'use strict';

/**
 * 佳一学生信息维护
 */
const Code = require('../common/error_code');
const userModel = require('../models/user.model');
const Util = require('../utils/hobot_util');

// 查询学生
async function query(ctx) {
    const params = ctx.request.body;
    // 校验参数
    if (!params.page_num || !params.page_size) {
        return ctx.error(Code.RET_USER_QUERY_ERR_PARAM);
    }
    let cdt = {
        u_tp: 5
    };
    if (params.user_name) {
        cdt.u_nm = { $regex: params.user_name };
    }
    const users = await Util.pageQuery(params.page_num, params.page_size, userModel,
        cdt, '', '', {});
    ctx.success(Code.RET_USER_QUERY_OK, {
        page_num: params.page_num,
        page_size: params.page_size,
        total: users.total,
        result: users.results
    });
}

// 学生信息编辑
async function update(ctx){
    const isDev = ctx.request.host.indexOf('localhost')>-1
    const params = ctx.request.body
    try{
        const studentParams = {
            user_name: '姓名',
            user_num: '学号',
            _id: "缺少学生对应的id关键字"
        }
        const schema = Object.keys(studentParams)
        if(!params || typeof params !=='object') return ctx.error(Code.REQUEST_ERROR('请填写学生信息'))
        for(let key of schema){
            if(params[key]==undefined||params[key]===''){
                const msg = studentParams[key]
                return ctx.error(Code.REQUEST_ERROR(msg))
            }
        }
        const snumReg = /^[\da-zA-Z]{1,20}$/
        if(!snumReg.test(params.user_num)){
            return ctx.error(Code.REQUEST_ERROR('学号格式错误，合法字符为字母或数字，且不能超过20位'))
        }
        const updateParams = {
            u_nm: params.user_name,
            u_hp: params.user_avatar,
            u_sx: params.user_sex,
            u_pn: params.user_phone,
            u_em: params.user_email,

            s_num: params.user_num,
            s_school: params.user_school,
            s_class: params.user_class
        }
        const validData = await userModel.findOne({
            _id:{
                $ne: params._id
            },
            s_num: params.user_num
        })
        if(validData) return ctx.error(Code.REQUEST_ERROR('学号重复'))
        await userModel.findByIdAndUpdate(params._id,updateParams)
    }catch(err){
        console.log(err)
        return ctx.error(Code.REQUEST_ERROR('更新失败'))
    }
}

// 学生列表
exports.query = query;
// 编辑
exports.update = update;


